Saga Pattern
常にトランザクションの整合性を維持しようと努力する代わりに、アプリケーションで最終的な結果整合性を実装する トランザクションは3種類に分類され、Go/No Goの境界を決める
ロールバックができる
元の操作内のステップの影響を元に戻す
2つの間で、超えたら進むしかない
成功するまでリトライができる
Sagaパターンによるオーケストレーションのアプローチでは、コーディネーターサービスが、Sagaの意思決定とビジネスロジックの順序付けを集中化する 各サービスに何をすべきか、いつ行うのかをコントロールするコーディネーター(サガオーケストレーター)を定義し、サガオーケストレーターは、どのサービスを実行すべきかをメッセージキューのイベント/戻りイベントで各サービスと通信する コーディネーター各サービスへの要求にはRESTの場合もある 処理結果は、MQの戻りイベントで待ち受けます。
課題
ローカルトランザクションの結果が他サービスに見えてしまう
対策: CQRSで参照用DBに対して一番最後に書き込みを行う 参考